package com.yuandian.customer.perception.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.api.customer_perception.po.LowFrequencyOverviewParams;
import com.yuandian.api.customer_perception.vo.ExportListVo;
import com.yuandian.api.customer_perception.vo.HisExportListVo;
import com.yuandian.api.customer_perception.vo.LowFrequencyHistoryExportVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 说明：导出列表mapper接口
 * @Author yanjun
 * @Date 2021/4/26 9:02
 */
@Mapper
public interface ExportListMapper {

    /**
     * 查询导出列表总数
     * @param params 低频受理业务概况请求对象
     * @param acceptStateStr 受理状态字段
     * @param cycleTimeUsecStr 时间周期字段
     * @return 总数
     */
    //@SqlAlias("查询导出列表总数")
    Integer queryExportListCount(@Param("params") LowFrequencyOverviewParams params,@Param("acceptStateStr") String acceptStateStr,@Param("cycleTimeUsecStr")String cycleTimeUsecStr);

    /**
     * 查询导出列表
     * @param params 低频受理业务概况请求对象
     * @param page 分页对象
     * @return 导出列表vo对象集合
     */
    //@SqlAlias("查询导出列表")
    List<ExportListVo> queryExportList(
            @Param("params") LowFrequencyOverviewParams params,@Param("acceptStateStr") String acceptStateStr,
            @Param("cycleTimeUsecStr")String cycleTimeUsecStr,Page<ExportListVo> page);

    /**
     * 查询导出列表不分页
     * @param params 请求参数
     * @param acceptStateStr
     * @param cycleTimeUsecStr
     * @return
     */
    //@SqlAlias("查询导出列表不分页")
    List<ExportListVo> queryExportListNoPage(
            @Param("params") LowFrequencyOverviewParams params,@Param("acceptStateStr") String acceptStateStr,
            @Param("cycleTimeUsecStr")String cycleTimeUsecStr);

    /**
     * 是否存在 不是要加入的数据的周期在导出列表 中
     * @param params 导出列表vo对象集合
     * @return 导出列表vo对象集合
     */
    //@SqlAlias("是否存在遗留数据在导出列表中")
    List<ExportListVo> isExitExportData(@Param("params") LowFrequencyOverviewParams params);

    /**
     * 修改建议
     * @param vo 导出列表vo对象
     * @return 影响行数
     */
    //@SqlAlias("修改建议")
    int updateSuggest(ExportListVo vo);

    /**
     * 根据id查询导出列表
     * @param ids id集合
     * @return 导出列表vo对象集合
     */
    //@SqlAlias("根据id查询导出列表")
    List<ExportListVo> queryExportListByIds(List<Long> ids);

    /**
     * 添加至历史导出列表
     * @param helVoList 历史导出列表vo对象集合
     * @return 影响行数
     */
    //@SqlAlias("添加至历史导出列表")
    int addHisExportList(List<HisExportListVo> helVoList);

    /**
     * 移除导出列表
     * @param ids id集合
     * @return 影响行数
     */
    //@SqlAlias("移除导出列表")
    int removeExportList(@Param("list") List<Long> ids);

    /**
     * 清空导出列表
     * @param statisticsType 统计类型
     * @return 影响行数
     */
    //@SqlAlias("清空导出列表")
    int clearExportList(Integer statisticsType);


    /**
     * 添加至历史导出文件列表
     * @param historyExportVo 历史导出列表vo对象集合
     * @return 状态
     */
    int addHisExportFile(@Param("params") LowFrequencyHistoryExportVo historyExportVo);
}
